Установка необходимых утилит
Скрипт backup
Выполнение резервного копирования вручную
Выполнение резервного копирования по расписанию
Запуск резервной копии на резервном устройстве
Восстановление резервной копии на новом устройстве
Сервер Пульт.Онлайн хранит все необходимые для работы файлы в директории установки, которую далее будем именовать рабочей директорией. Это значит, что для полного резервного копирования развернутого дистрибутива (со всеми исполняемыми файлами, конфигами, проектными и историческими данными) достаточно скопировать рабочую директорию и перенести ее содержимое на другое устройство.
Данная процедура может быть выполнена различными способами, в т.ч. с предварительным архивированием. Однако, для систем с большим объемом исторических данных рекомендуется использовать утилиту rsync для минимизации трафика и времени копирования, т.к. данная утилита копирует только измененные части файлов и сохраняет их атрибуты, что позволяет в любой момент запустить резервную копию без предварительных подготовок.
В дистрибутиве сервера имеется скрипт backup, который выполняет отправку содержимого рабочей директории на резервное устройство с помощью утилиты rsync. Для работы скрипта требуется также наличие утилиты sshpass.
Debian, Ubuntu, Mint, Kali и т.п.:
apt update
apt install rsync sshpass -y
RHEL, CentOS, Fedora и т.п.:
yum makecache
yum install rsync sshpass -y
Скрипт backup размещен в корне рабочей директории сервера. Если в вашем дистрибутиве данный скрипт отсутствует, вы можете создать его самостоятельно.
Перейдите в рабочую директорию:
cd /pult_server
Откройте текстовый редактор, например nano, указав аргументом имя скрипта:
nano backup
Скопируйте и вставьте в редактор следующий код:
#!/bin/bash
if [[ -z "$1" ]] || [[ "$1" == "-h" ]] || [[ "$1" == "--help" ]] || [[ "$1" == "?" ]]; then
echo "Usage: ./backup <host> <port> <ssh_login> <ssh_passwd> [<dest_dir>]"
echo "Exmpl: ./backup 192.168.0.100 22 root 1234 /backups/daily - backup pult dir to 192.168.0.100/backups/daily"
echo " ./backup 192.168.0.100 22 root 1234 - backup pult dir to 192.168.0.100/pult_server"
else
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
if [[ -z "$5" ]]; then
DEST_DIR=$SCRIPT_DIR
else
DEST_DIR="$5"
fi
rsync -av --rsh="sshpass -p $4 ssh -o StrictHostKeyChecking=no -p '$2'" --delete $SCRIPT_DIR/ $3@$1:$DEST_DIR/
fi
Сохраните файл: Ctrl+O
(сохранить), затем Ctrl+X
(выйти).
Назначьте права на выполнение:
chmod +x backup
Скрипт готов к работе.
Убедитесь, что резервное устройство доступно, например с помощью команды ping
. Для примера возьмем хост с адресом 192.168.0.100:
ping 192.168.0.100
Выполните скрипт backup. Формат команды:
/pult_server/backup <host> <port> <ssh_login> <ssh_passwd> [<dest_dir>]
Обратите внимание, ваша рабочая директория может отличаться от /pult_server
. Указывайте актуальный путь.
Пример команды:
./backup 192.168.0.100 22 root 1234
В данном примере бэкап будет выполнен на хост 192.168.0.100
через 22
порт (стандартный для SSH), подключение выполнится от имени пользователя root
с паролем 1234
. Директоря назначения в данном примере будет аналогична рабочей директории на исходном хосте (/pult_server
).
Пример установки в произвольную директорию:
./backup my.backup.server 22 root 1234 /backup/pult3
В данном примере копирование будет выполнено в директорию /backup/pult3
на my.backup.server
.
Резервное копирование по расписанию можно организовать с помощью crontab. Для этого добавьте в список заданий команду выполнения скрипта backup с требуемыми аргументами, как описано в предыдущем разделе.
Откройте файл заданий crontab для редактирования
crontab -e
Добавьте задание в crontab, например:
0 3 * * * ./backup 192.168.0.100 22 root 1234
Здесь 0 3 * * *
означает в 00 минут в час 03
, т.е. в 3 часа ночи.
С помощью crontab резервное копирование можно выполнять в разные директории, чтобы обеспечить наличие нескольких копий с разным интервалом копирования. Например, можно выполнять три копии, ежедневную, еженедельную и ежемесячную. Для этого в файл crontab добавьте соответствующие задания:
0 3 * * * ./backup 192.168.0.100 22 root 1234 /backup/daily
0 3 * * 1 ./backup 192.168.0.100 22 root 1234 /backup/weekly
0 3 1 * * ./backup 192.168.0.100 22 root 1234 /backup/monthly
Сохраните и закройте файл заданий crontab
Проверьте список заданий
crontab -l
Резервная копия, созданная с помощью утилиты rsync, полностью готова к запуску по месту своего расположения, т.к. rsync переносит исполняемые файлы с сохранением прав и атрибутов. Т.е. резервное устройство, на котором присутствует копия сервера, может быть в любой момент запущено как сервер командой ./start.
При таком сценарии использования, после запуска резервного устройства в замен вышедшего из строя основного сервера, для полного восстановления работоспособности SCADA-системы достаточно перевести шлюзы на IP или домен резервного устройства или задать резервному устройству адрес основного сервера.
При локальном развертывании сервера, без использования шлюзов, запуск резервного устройства вместо основного сервера должен полностью восстановить работоспособность развернутой SCADA-системы, при условии размещения резервного сервера в подсети основного сервера.
Порядок запуска резервной копии сервера
Убедитесь, что основной сервер отключен (для избежания конфликтов и коллизий)
Подключитесь к резервному устройству с помощью SSH-клиента
Залогинтесь под пользователем с соответствующими правами
Запустите скрипт инициализации (для регистрации сервера в автозагрузке):
./init
Запустите сервер:
./start
Проверьте доступность веб-интерфейса и работоспособность системы.
Перезагрузите устройство и убедитесь, что сервер автоматически запускается после перезагрузки.
Резервную копию сервера можно развернуть на новом устройстве с помощью скрипта backup - процесс аналогичен выполнению резервного копирования, с тем отличием, что вы копируете на новое устройство резервную копию, а не оригинальное содержимое рабочей директории.
Порядок копирования резервной копии на новое устройство
Убедитесь, что на резервном устройстве, с которого будет выполняется копирование, установлены утилиты rsync и sshpass. Это можно сделать, вызвав эти утилиты без аргументов:
rsync
sshpass
Если утилиты отсутствуют, установите их.
Убедитесь, что новое устройство доступно, например с помощью команды ping
. Например:
ping 192.168.0.101
Перейдите в директорию резервной копии, например:
cd /pult_server
Выполните скрипт backup для копирования содержания директории на новое устройство. Формат команды:
./backup <host> <port> <ssh_login> <ssh_passwd> [<dest_dir>]
Рекомендуем в качестве директории установки указывать стандартную /pult_server
.
Пример команды:
./backup 192.168.0.101 22 root 1234 /pult_server
Подключитесь к новому устройству по SSH.
Перейдите в директорию установки:
cd /pult_server
Выполните скрипт init
для регистрации сервера в автозагрузке.
./init
Запустите сервер:
./start
Проверьте доступность веб-интерфейса и работоспособность системы на новом устройстве.
Перезагрузите устройство и убедитесь, что сервер автоматически запускается после перезагрузки.